签名说明
由于 XT 需要为第三方平台提供一些开放接口,因此需要考虑接口的数据安全问题,例如数据是否被篡改、数据是否过期、数据是否可以重复提交,以及在一定时间内访问接口的频率等。其中,数据是否被篡改最为重要。
规则
-
AppKey & SecretKey 离线分发 appkey 和 secretkey。针对不同的调用方,提供不同的 appkey 和 secretkey。
-
Timestamp 添加时间戳,其值应为发送请求时的 unix 时间戳(毫秒)。根据此值计算数据的有效时间。
-
Signature 为所有数据添加签名信息。
-
RecvWindow 有效时间相对简单,固定为某个值。例如,在相同的 api 和 appid 下,数据在 10 分钟内有效。这里可以进一步优化为单个 api 的有效时间不同。
- 服务器在收到请求时判断时间戳。最多 60 秒,默认 5 秒。
- 如果是在 5000 毫秒前发送的,请求将被视为无效。
- 可以通过发送可选参数
recvWindow
来自定义此时间窗口值。 - 如果服务器计算出客户端时间戳比服务器时间_超前_一秒以上,服务器也会拒绝该请求。
⚠️ 不建议使用超过 5 秒的 RecvWindow。
-
Algorithms 添加算法(签名方法/算法)。用户的签名计算基于 HSC,默认使用 HmacSHA256。支持的协议:
- HmacMD5
- HmacSHA1
- HmacSHA224
- HmacSHA256(默认)
- HmacSHA384
- HmacSHA512
示例
名称 | 必填 | 示例 | 描述 |
---|---|---|---|
validate-appkey | true | dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83 | |
validate-timestamp | true | 1641446237201 | |
validate-signature | true | 0a7d0b5e802eb5e52ac0cfcd6311b0faba6e2503a9a8d1e2364b38617877574d | |
validate-recvwindow | false | 5000(毫秒) | |
validate-algorithms | false | HmacSHA256 | 默认:HmacSHA256。支持:HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512 |
api-version | false | 1.0 | 保留字段,API 版本号 |
validate-signversion | false | 1.0 | 保留字段,签名版本号 |